package com.tmt.core.web.security.session;

import com.tmt.core.security.principal.Session;
import com.tmt.core.security.subject.Subject;
import com.tmt.core.security.utils.SecurityUtils;

/**
 * 会话数据存储方案
 * 
 * @author lifeng
 */
public class SessionProvider {

	/**
	 * 如果没有则，不会强制创建一个session
	 * 
	 * @return
	 */
	private static Session getSession() {
		Subject subject = SecurityUtils.getSubject();
		return subject != null ? subject.getSession() : null;
	}

	/**
	 * 调用 自定义的 session
	 * 
	 * @param key
	 * @param value
	 */
	public static void setAttribute(String key, Object value) {
		Session session = getSession();
		if (session != null) {
			session.setAttribute(key, value);
		}
	}

	/**
	 * 调用 自定义的 session
	 * 
	 * @param key
	 * @param value
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getAttribute(String key) {
		Session session = getSession();
		if (session != null) {
			return (T) (session.getAttribute(key));
		}
		return null;
	}

	/**
	 * 删除会话属性
	 * 
	 * @param key
	 */
	public static void removeAttribute(String key) {
		Session session = getSession();
		if (session != null) {
			session.removeAttribute(key);
		}
	}
}